package com.xbstar.datafusion.controller;

import java.util.List;

import org.springframework.stereotype.Service;

import com.alibaba.fastjson.JSONObject;
import com.xbstar.datafusion.util.ProtocolType;

@Service
public class RuleManage {
	/**
	 * 根据sysid加载该id下的所有规则，包含存储，转发规则
	 * @param id
	 * @return
	 */
	public List<RuleDomain> getRulesById(String id){
		return null;
	}
	/**
	 * 判断消息内容是否适用该规则
	 * @param json 原文内容
	 * @param ruleDomain 规则
	 * @return
	 */
	public boolean check(JSONObject json, RuleDomain ruleDomain) {
		// 采用启发式规则进行
		/**
		 * 例如： 
		 * 1. 判断规则中必须的字段的个数与报文中字段个数的关系
		 * 2. 把规则中的必须的字段依次加入报文字段的set中，如果set个数变化，返回false；
		 */
		
		return false;
	}
	/**
	 * 根据规则生成数据块
	 * @param json
	 * @param ruleDomain
	 * @return
	 */
	public JSONObject getDetailPackage(JSONObject json, RuleDomain ruleDomain) {
		// TODO Auto-generated method stub
		return null;
	}
	/**
	 * 根据规则把数据块带上接受着签名转发
	 * @param jsonp
	 * @param ruleDomain
	 * @return
	 */
	public List<JSONObject> getPackagesByRule(JSONObject jsonp, RuleDomain ruleDomain) {
		// TODO Auto-generated method stub
		return null;
	}
	/**
	 * 根据块号和接受者编号转换包格式字段
	 * @param json
	 * @param blockId
	 * @param receiveId
	 * @return
	 */
	public JSONObject getPackageByBlockIdAndSysId(JSONObject json, String blockId, String receiveId) {
		/**
		 * 
		 */
		return null;
	}
	/***
	 * 获得与接受者的系统链接的协议
	 * @param blockId
	 * @param receiveId
	 * @return
	 */
	public ProtocolType getProtocolTypeByBlockIdAndSysId(String blockId, String receiveId) {
		// TODO Auto-generated method stub
		return null;
	}

}
